home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d11 / viz412.arc / VIZ.DOC < prev    next >
Text File  |  1991-06-06  |  65KB  |  1,265 lines

  1. ┌──────────────────────────────────────────────────────────────────────────────┐
  2. │ Designations claimed as trademark appear in initial capitals or all capitals │
  3. └──────────────────────────────────────────────────────────────────────────────┘
  4.   Copyright (c) 1989, 1990, 1991 by F.M. de Monasterio.  All rights reserved.
  5.  
  6.                                VIz version 4.12
  7.                                ----------------
  8.  
  9.    SUMMARY
  10.  
  11.    VIz is a small resident program that accelerates BIOS (and DOS) video input
  12.    and output in text mode; it can be used with IBM-compatible MDA, EGA or VGA
  13.    adapter cards and Hercules HGC and HGC+ cards.  In its present version, VIz
  14.    produces video interference ("snow") in old CGA cards; for such systems you
  15.    can use VIz-CGA, a snow-free, 8088-cpu oriented version.
  16.  
  17.    In addition, VIz includes an independent, resident component for displaying
  18.    a block cursor, either continously or alternating with a line cursor (at an
  19.    adjustable rate of alternation). The latter display is well suited for easy
  20.    localization of the cursor in some laptop screens.
  21.  
  22.    Finally, VIz also contains an independent, resident ANSI-filter driver that
  23.    mediates a subset of the ANSI escape sequences to control the console. This
  24.    filter can be used, instead of ANSI.SYS, to implement ANSI escape sequences
  25.    to control video display, with the advantage that can be turned off and on,
  26.    and removed from memory without rebooting.
  27.  
  28.    All 3 resident modules occupy a total of less than about 1700 bytes of RAM.
  29.    Depending on system configuration and BIOS version, video acceleration by a
  30.    factor of between 2 and 10 may be expected.
  31.  
  32.  ------------------------------------------------------------------------------
  33.  
  34.    GENERAL INFORMATION
  35.  
  36.    There are 3 basic ways of producing character-oriented, text video displays
  37.    in DOS computers: (1) using direct video memory mapping, which is extremely
  38.    fast but dependent on the video hardware and has a limited portability; (2)
  39.    via BIOS services, provided by the first "hidden" DOS boot file and usually
  40.    augmented by the video adapter, which are not as fast as direct mapping but
  41.    more portable; and (3) via DOS services, provided by the other "hidden" DOS
  42.    boot file and sometimes augmented via installable device drivers, which are
  43.    much slower than the other two approaches, but have greater portability and
  44.    permit additional operations such as redirection.
  45.  
  46.    Many of the DOS and BIOS video services can be accelerated using a resident
  47.    program that intercepts the calls made to such services, and implements the
  48.    video operation with faster instructions.  Because of the nature of DOS and
  49.    of BIOS services, the interception must occur at the input site of the BIOS
  50.    services (interrupt 10h), whereas it can occur at the input site (interrupt
  51.    21h) or output site (interrupt 29h), or both, of the DOS services.
  52.  
  53.    VIz is a utility that accelerates many of the basic text-video functions and
  54.    permits changing the video mode, page and font of the display as well as the
  55.    raw or normal mode of DOS video ouput.  When used with a VGA/EGA system, VIz
  56.    also permits control of the red, green, and blue mixture that determines the
  57.    color of each of the 16 registers of the EGA/VGA color palette, allowing for
  58.    the remapping of the RGB mixture to suit user preferences. Finally, VIz also
  59.    permits the control of the frequency (pitch) of the bell's tone.
  60.  
  61.    VIz releases require MS-DOS or PC-IBM DOS version 2.10 or later.
  62.  
  63.    A 32-bit CRC calculation is performed each time VIz is invoked. If it fails,
  64.    the program will abort to DOS; CRC failures indicate corruption of the code,
  65.    and the program therefore should not be used.
  66.  
  67.                                 ----------------
  68.  
  69.    HARDWARE COMMANDS - TESTOUT.EXE
  70.  
  71.    Cursor position is updated via direct hardware commands.  Starting with VIz
  72.    release 3.00, such commands can be sent out as WORD (double-byte) values or
  73.    as two successive BYTE values. The WORD-out method of addressing, also used
  74.    by other programs (e.g. Microsoft Windows), yields faster accelerations but
  75.    it may not work with some (older) clone systems.
  76.  
  77.    To test which method of addressing you can use, run the program TESTOUT.EXE
  78.    to see if the cursor appears at the indicated position. If it does so, your
  79.    system can handle WORD out commands.
  80.  
  81.  
  82.    CPU VERSIONS
  83.  
  84.    The 286 release of VIz is faster than the 086 release by taking advantage of
  85.    286-code in real mode. Similarly, the 386 release uses 386-code in real mode
  86.    to take advantage of 32-bit operations, and other 386-specific instructions;
  87.    while this combination makes this release faster than the others for a 80386
  88.    or 80486 CPU machine, its video acceleration performance is dependent on bus
  89.    size (i.e. 386SX) and the additional wait states imposed during video memory
  90.    access.  Consequently, actual acceleration values may be less than otherwise
  91.    could be expected.  The same caveat applies to 80486 processors due to clock
  92.    cycle differences for some instructions and their alternatives (i.e., 'lods'
  93.    vs. 'mov/add' combination); a 486 release of VIz may become available soon.
  94.  
  95.    Average accelerations and comparisons with other accelerators, based on four
  96.    benchmarks, are described in the accompanying file VIZ.DAT for 086, 286, and
  97.    386 VIz versions.
  98.  
  99.  ------------------------------------------------------------------------------
  100.  
  101.    1.  VIDEO ACCELERATION MODULE
  102.  
  103.    VIz installs itself as a resident program that can be invoked repeatedly for
  104.    modification of its parameters, without producing multiple copies on memory;
  105.    the accelerator module of the resident uses less than 1,000 bytes of RAM. To
  106.    maximize speed of code, but minimize resident size, acceleration only occurs
  107.    for video page 0 in a text mode (1-3, color; 7, monochrome).  In other pages
  108.    or graphic modes, VIz becomes inactive and is automatically reactivated by a
  109.    change that resets the video to page 0 in a text mode.  Viz accelerates BIOS
  110.    video functions, and it can also accelerate DOS-mediated screen output.
  111.  
  112.    The acceleration of VIz can be turned off either by deallocating the program
  113.    with the switch /U (if no other resident has been installed after VIz) or by
  114.    making it quiescent with switch /Q (i.e. it remains resident but not active)
  115.    until reactivation (any switch but /QU) or deallocation by a further call to
  116.    VIz.
  117.  
  118.    The relative acceleration depends on several factors, including BIOS version
  119.    and date, 80x86 Intel CPU model and speed, and whether or not ROM video BIOS
  120.    is shadowed or remapped to faster RAM. Another factor, often disregarded, is
  121.    the use of other residents also intercepting the interrupt 10h. In addition,
  122.    some memory managers, even when RAM-shadowing video BIOS, have been found to
  123.    yield nontrivial degradations of video speed (see VIZ.DAT).  Whereas smaller
  124.    acceleration factors are to be expected in machines performing a faster BIOS
  125.    operation (i.e. tighter ROM code, faster CPU, shadowed or remapped ROM), the
  126.    relative weight of individual factors may yield unexpected results.
  127.  
  128.    VIz updates relevant parameters in the BIOS data area (segment 40h), such as
  129.    cursor position (page 0 only) and type, video mode, page, and font, that are
  130.    also processed by VIz; while such updating degrades video acceleration time,
  131.    it also decreases the possibility of conflict with foreground utilities that
  132.    use BIOS data but bypass BIOS calls.
  133.  
  134.                                 ----------------
  135.  
  136.  
  137.    2.  BLOCK-AND-LINE CURSOR ALTERNATION MODULE
  138.  
  139.    To help cursor visualization in screens where the cursor is not easily seen,
  140.    as in some laptop displays, VIz provides a small resident module that allows
  141.    for the display of a (full-)block cursor, either continuously or alternating
  142.    with a line cursor. The alternation rate can be adjusted in steps of 54.9 ms
  143.    between about 0.055 s (/V1) and 5.5 s (/V99).  A zero alternation rate (/V0)
  144.    produces a continously present block cursor.  For the module to be loaded in
  145.    memory, VIz must be installed with any /V switch (see below), and it adds an
  146.    additional 100 bytes to the resident size of VIz.
  147.  
  148.    Very short or very long alternation rates are distracting or hard to follow.
  149.    When selecting a rate for laptop displays, start with a value of n=9 (.50 s)
  150.    or so.
  151.  
  152.    Block cursor alternation can be turned off by making this resident quiescent
  153.    with the switch /V+ (until its reactivation with /Vn). All cursor operations
  154.    use direct commands to the hardware, and assume register-level compatibility
  155.    with the Motorola 6845 CRT controller. This chip is present in MDA, CGA, and
  156.    HGC cards, while a 6845-compatible CRTC is a custom LSI chip in the IBM-EGA,
  157.    part of the Memory Controller Gate Array on the MCGA, or a part of the Video
  158.    Graphics Array on the VGA.
  159.  
  160.    Notice that the hardware-controlled blinking of the cursor is not eliminated
  161.    by this service. Hence, depending on the alternation rate selected, a 2-beat
  162.    frequency may be noticeable.
  163.  
  164.                                 ----------------
  165.  
  166.  
  167.    3.  ANSI-COMPATIBLE VIDEO FILTER MODULE
  168.  
  169.    MS-DOS and IBM PC-DOS files include ANSI.SYS, a console filter driver that
  170.    mediates a subset of American National Standards Institute (ANSI) standard
  171.    escape sequences for video functions as well as a supplementary subset for
  172.    keyboard functions (such as key reprogramming).
  173.  
  174.    VIz has a second, independently installable resident module that implements
  175.    standard ANSI escape sequences to control the console video functions. This
  176.    ANSI-compatible filter uses less than some 800 additional bytes of RAM when
  177.    installed. It can be turned off either by uninstalling all the VIz resident
  178.    modules or by inactivating the filter with switch /A-.  The inactive filter
  179.    can be reactivated with switch /A+.  All ANSI operations use BIOS calls.
  180.  
  181.    The filter does not provide by itself much acceleration of DOS video I/O as
  182.    far as ANSI instructions are concerned.  Its advantages are small size, the
  183.    capability of being switched on or off, and its harmonious working with the
  184.    acceleration module of VIz.
  185.  
  186.    To avoid conflicts, VIz will not install its ANSI filter if ANSI.SYS or the
  187.    utility ANSI.COM (Copyright 1989 Ziff-Davis Corp., version 1.20) is already
  188.    loaded.  The presence of either one can be ascertained via the Status/Usage
  189.    panel displayed by the command 'VIZ ?┘' from the DOS prompt.
  190.  
  191.                                     --------
  192.  
  193.    The ANSI-compatible filter implements the following subset of ANSI 3.64-1979
  194.    standard escape sequences to control console video functions (see your MS/PC
  195.    DOS documentation of ANSI commands):
  196.  
  197.      A. Selection of the foreground and background colors on a color display or
  198.         the text attributes on a monochrome display system. The sequence syntax
  199.         is <Esc>[#;...;#m, where # is 30-37 to select a foreground color, 40-47
  200.         47 to select a background color, and 0-1, 4-5 or 7-8 to select the text
  201.         attributes.
  202.  
  203.      B. Selection of the video mode (similar to using the MODE command of DOS).
  204.         The sequence syntax is <Esc>[=#h or <Esc>[=#l, where # is 0-6 or higher
  205.         (depending on the adapter card in use).
  206.  
  207.      C. Selection of word wrapping, i.e. whether lines longer than the width of
  208.         the screen are truncated. The sequence syntax is <Esc>[?7h or <Esc>[?7l
  209.         to turn word wrapping ON or OFF, respectively.
  210.  
  211.      D. Cursor positioning for the following sequences:
  212.  
  213.                <Esc>[r#;c#H  -  Move to specified row (r#) and column (c#)
  214.                <Esc>[r#;c#f  -  Same a previous sequence
  215.                <Esc>[r#A     -  Move cursor up by specified number of rows
  216.                <Esc>[r#B     -  Move cursor down by specified number of rows
  217.                <Esc>[c#C     -  Move forward the specified number of columns
  218.                <Esc>[c#D     -  Move backward the specified number of columns
  219.  
  220.                <Esc>[s       -  Store current position of the cursor
  221.                <Esc>[u       -  Restore to the position stored by <Esc>[s
  222.  
  223.                <Esc>[K       -  Erase from the cursor to end of the line
  224.                <Esc>[2J      -  Clear all rows and home cursor (this sequence
  225.                                 preserves current color attribute)
  226.  
  227.    Not supported by the filter are the cursor-position-reporting ANSI sequence
  228.    (<Esc>[r#;c#R) and the supplementary set of sequences used by DOS' ANSI.SYS
  229.    to permit keyboard reprogramming (i.e. <Esc>[#;'string';3p), a set which is
  230.    not part of the 1979 ANSI standard.
  231.  
  232.    You should thus consider using the filter, instead of ANSI.SYS or ANSI.COM,
  233.    when interested in using video escape sequences alone, without any keyboard
  234.    remapping.
  235.  
  236.                                 ----------------
  237.  
  238.    4.  INTERCEPTED INTERRUPTS
  239.  
  240.    VIz versions 2.40 and higher do not monitor interrupt 1Ah any longer before
  241.    attempting to uninstall the residents.  The following hardware and software
  242.    interrupts are intercepted according to the loading configuration:
  243.  
  244.  
  245.    INTERRUPT 8h (system timer):
  246.  
  247.    Channel 0 of the 8253/8254 timer chip produces a hardware interrupt (IRQ0),
  248.    interrupt 8h, about 18.2 times a second that is used by the system time-of-
  249.    day clock. When the cursor module is installed, switch /Vn (n=0 or 1 to 99)
  250.    forces the display of the block cursor, either in continuous or alternating
  251.    manner. Depending on the VIz version (cf. 4.2), cursor shape is implemented
  252.    via commands using word (16 bits) or byte (8 bits) output.
  253.  
  254.  
  255.    INTERRUPT 10h (video BIOS):
  256.  
  257.    The accelerator module of VIz intercepts the ROM BIOS video interrupt, 10h.
  258.    When the system is in page 0 and a text mode, video acceleration occurs for
  259.    subfunctions 0h through Eh, except for subfunctions 4h, 7h, Bh, and Ch.
  260.  
  261.  
  262.    INTERRUPT 21h (DOS services):
  263.  
  264.    Starting with version 2.0, DOS allows the redirection of the Standard Input
  265.    (StdIn) and Standard Output (StdOut) console device, permitting programs to
  266.    send input to or to receive output from other programs.  Unless redirected,
  267.    the StdIn comes from the keyboard and the StdOut goes to the screen.  These
  268.    and some other devices can be addressed by predefined DOS 'file handles' as
  269.    if they were disk files.  A common DOS-mediated technique to send output to
  270.    the screen is to write to the handle 1 (StdOut) via interrupt 21h, function
  271.    40h; in fact, this is the preferred method of DOS-mediated video output for
  272.    DOS version 2.0 or higher.
  273.  
  274.    The accelerator module of VIz also intercepts interrupt 21h. Switch /Z+ re-
  275.    directs the 21h/40h/1-console stream (StdOut) to the accelerator, resulting
  276.    in significant accelerations of the DOS video services. The acceleration is
  277.    not increased by setting the DOS mode to "raw" (see below).  Switch /Z- (or
  278.    default installation) permits the 21h/40h/1-video output to be processed by
  279.    the CON: device.
  280.  
  281.    The redirection of StdOut to VIz does not conflict with the CLS command (as
  282.    the redirection does not affect interrupt 29h [see section 4.1]). Selection
  283.    of switch /Z+, however, voids any redirection of the StdOut, including that
  284.    to the NUL: device (e.g., to avoid some messages), since the 21h/40h-stream
  285.    is intercepted by VIz before the output can be redirected by DOS.
  286.  
  287.    Switch /Z requests are not disregarded when ANSI.SYS, ANSI.COM, or VIz-ANSI
  288.    filter is active. Notice, however, that the redirection of StdOut by switch
  289.    /Z+ will conflict with any ANSI command sent to the CON device via standard
  290.    output calls to interrupt 21h/40h/1.  ANSI commands using interrupt 29h are
  291.    not affected by switch /Z+ (see below).
  292.  
  293.  
  294.    INTERRUPT 29h (fast CON)
  295.  
  296.    The ANSI-compatible module of VIz intercepts interrupt 29h, an undocumented
  297.    feature present in all recent versions of DOS. Int 29h is normally provided
  298.    by the built-in console device driver of DOS, and consists of a call to the
  299.    BIOS interrupt 10h.  DOS uses int 29h instead of the normal request-passing
  300.    mechanism to accelerate output to the current CON: device.  The ANSI module
  301.    filters this output.
  302.  
  303.    If a request to inactivate the installed ANSI filter is encountered (switch
  304.    /A-), VIz checks whether the int 29h can be restored to its original memory
  305.    address. If the revectoring is not possible (i.e. when another resident has
  306.    also intercepted int 29h), this filter remains partially active in order to
  307.    handle an ANSI escape sequence generated by COMMAND.COM to clear the screen
  308.    when a CLS command is detected (see below); other ANSI escape sequences are
  309.    ignored by the filter and passed to the screen.  Hence, when revectoring is
  310.    possible, switch /A- has the same effect as installing VIz without a switch
  311.    /A, except that the memory occupied by the ANSI filter is not released; the
  312.    filter is reactivated by a subsequent call to execute VIz with switch /A+.
  313.  
  314.    VIz versions 3.64 and higher do not redirect interrupt 29h to the teletype
  315.    service of VIz any longer (old switch /X±).
  316.  
  317.  
  318.  
  319.    4.1  THE CLS COMMAND AND INTERRUPT 29h
  320.  
  321.    The internal console device driver installed during booting handles the CLS
  322.    as well as int 29h service. The CLS procedure of COMMAND.COM first tests to
  323.    see if (1) the standard-output handle is associated with a character device
  324.    driver (bit 7=1), and (2) the driver services int 29h (bit 4=1).  If one or
  325.    both tests fail, or if both tests are successful but the vector for int 29h
  326.    does not point to the memory segment of the DOS kernel, COMMAND.COM outputs
  327.    the ANSI escape sequence <Esc>[2J to int 29h; otherwise, it makes a call to
  328.    int 10h, subfunction 6 of the BIOS to clear the screen.
  329.  
  330.    When int 29h cannot be revectored on /A-, the partial driver activity slows
  331.    down slightly the DOS video output whenever the ASCII character 27 (Esc) is
  332.    found in the character stream. This partial activity is needed, however, as
  333.    DOS issues an ANSI escape sequence to clear the screen whenever int 29h has
  334.    been revectored.  Thus, if VIz were not to retain its ANSI driver partially
  335.    active when revectoring of int 29h is not possible, the DOS escape sequence
  336.    would be displayed (without clearing the screen) whenever a CLS command was
  337.    issued.
  338.  
  339.  ------------------------------------------------------------------------------
  340.  
  341.    5.  USAGE
  342.                        Syntax:  VIZ [/Switches] [;Comments]
  343.  
  344.    The switches can be entered from:
  345.  
  346.         (1) the DOS command line (COMMAND.COM shell prompt)
  347.         (2) a batch file
  348.         (3) a DOS environment string with the format VIZ=/SWITCH1.../SWITCHn
  349.  
  350.  
  351.    Switches can be given in any order.  Any character between space and slash
  352.    [/] can be used as a switch delimiter.  Switches are not case sensitive.
  353.  
  354.    Switches /A, /B, /C, /D, /I, /M, /P, /R, and /S are "sticky" parameters in
  355.    the sense that the video change they produce will remain in effect even if
  356.    VIz is made quiescent or is uninstalled.
  357.  
  358.  
  359.    --------------------------------------------------------------------------
  360.      Switches marked with asterisks are available only in registered copies
  361.    --------------------------------------------------------------------------
  362.  
  363.  
  364.    - [/?]  Status/Usage/Help panels.  Switch /? displays a status/usage panel,
  365.      which shows the status of video I/O services, StdOut stream re-direction,
  366.      ANSI filter, DOS character processing and the current value of video page
  367. |    and video mode.  When VIz is installed, a brief explanation of the status
  368. |    of each highlighted service can be obtained by pressing the left or right
  369. |    (cursor) arrow keys or, when a Microsoft Mouse driver 6.0 or a compatible
  370. |    driver is already installed, by clicking the mouse over the screen button
  371. |    marked 'Status.'          
  372.  
  373.      When video modes higher than n+128 (which do not clear the display buffer
  374.      when selected [AT and PS/2]) are detected, the mode number is followed by
  375.      an asterisk; thus video mode 131 is displayed as '3*' in the Status line.
  376. |    In addition to the status-line panels, the status of some on/off switches
  377. |    is also shown by a '+' or '-' on the switches menu before a given switch.
  378.  
  379.      When switch /? is requested and a EGA or VGA adapter is present, VIz will
  380.      attempt to read (and save) the contents of the palette registers prior to
  381.      asserting its own attribute palette for the display. For the EGA, this is
  382.      attempted by setting up a 'Parameter Save Area' that the EGA BIOS can use
  383.      to store the contents of the palette registers, and the border (overscan)
  384.      register, so that these contents can be restored upon exiting the Syntax/
  385.      Status panel. If the EGA BIOS fails to store the data, VIz then loads the
  386.      default palette described below in switch /C; the original palette can be
  387.      restored by clearing the screen (if VIz had been installed with switch /C
  388.      enabled) or by resetting the video mode.
  389.  
  390. |    The Usage panel lists all program switches; to cycle between the menus of
  391. |    main and auxiliary switches, press <F2> or <M> (or click one mouse button
  392. |    on the [Menu] pad).  The Help panel provides a summary description of the
  393. |    program and its switches: Press <F1> or <H> (or click one mouse button on
  394. |    the [Help] pad) to show the help panel.  To return to DOS from any panel,
  395. |    press <Esc> or <X> (or click one mouse button over the [eXit] pad).  From
  396. |    the Usage panel, a two-button click of the mouse in any position provides
  397. |    a quick exit to DOS.
  398.  
  399.                                     --------
  400.  
  401.    * [/A±]  Installs a resident filter to implement (the video subset of) ANSI
  402.      escape sequences; installation is aborted if presence of the DOS ANSI.SYS
  403.      is detected. Although this filter can take advantage of VIz acceleration,
  404.      it is independent of the accelerator resident component, and its activity
  405.      can be controlled independently with the following switches:
  406.  
  407.              * /A+    Reactivates the filter if installed and inactive, or (if
  408.                       VIz is not installed) installs the resident ANSI filter,
  409.                       and inactivates the remapping of the EGA/VGA palette via
  410.                       /Cn:n, /Cm, or /C+.
  411.  
  412.              * /A-    Inactivates the filter, if installed and active. It also
  413.                       reactivates a previously active remapping of the EGA/VGA
  414.                       palette.
  415.  
  416.      Defaults: /A = /A+
  417.  
  418.                                     --------
  419.  
  420.    * [/Bn]  Selects the color for the screen border in text mode and the back-
  421.      ground and border color for graphic modes. This color is specified by the
  422.      Red-Green-Blue mixture value given as 1 or 2-digit number in octal format
  423.      in the range from 0 to 77o (see Switch /C below).
  424.  
  425.      Since the border is notoriously poor in most EGA systems (due to overscan
  426.      properties), switch /B is not likely to produce an acceptable border with
  427.      such systems.  No defaults.
  428.  
  429.                                     --------
  430.  
  431.    * [/C]   Allows changes in the EGA/VGA color palette.  This palette, which
  432.      consists of 16 registers, is used map the video memory data into colors.
  433.      In EGA-compatible modes of the VGA and in the EGA, where 16 simultaneous
  434.      colors can be displayed out of a possible 64-color palette, the value in
  435.      each one of such registers determines the amount of Red, Green, and Blue
  436.      mixture in the displayed color.
  437.  
  438.      This amount can be represented by the data bits <RGBrgb>, where <000rgb>
  439.      shows the color at 33%, <RGB000> at 66%, and <RGBrgb> at 100% intensity.
  440.      These bits, and their resultant color, are shown below using both binary
  441.      (base 1) and octal (base 8) number formats:
  442.  
  443.       ┌─────────┬───────┬─────────────┐
  444.       │ binary  │ octal │    Color    │    Since the binary format takes up a
  445.       ├─────────┼───────┼─────────────┤    lot of space it is more convenient
  446.      °│ 000 000 │  00   │ 100% black  │    to use the 2-digit octal format to
  447.       │ 000 001 │  01   │  33% blue   │    represent an RGB value. The binary
  448.       │ 000 010 │  02   │  33% green  │    equivalence of octal numbers is:
  449.       │ 000 011 │  03   │  33% cyan   │
  450.       │ 000 100 │  04   │  33% red    │
  451.       │ 000 101 │  05   │  33% magenta│              0o = 000000b
  452.       │ 000 110 │  06   │  33% yellow │              1o = 000001b
  453.       │ 000 111 │  07   │  33% white  │              2o = 000010b
  454.       ├─────────┼───────┼─────────────┤              3o = 000011b
  455.      °│ 001 000 │  10   │  66% blue   │              4o = 000100b
  456.      °│ 010 000 │  20   │  66% green  │              5o = 000101b
  457.      °│ 011 000 │  30   │  66% cyan   │              6o = 000110b
  458.      °│ 100 000 │  40   │  66% red    │              7o = 000111b
  459.      °│ 101 000 │  50   │  66% magenta│             10o = 001000b
  460.      °│ 110 000 │  60   │  66% yellow │             11o = 001001b
  461.      °│ 111 000 │  70   │  66% white  │             12o = 001010b
  462.       ├─────────┼───────┼─────────────┤             13o = 001011b
  463.      °│ 001 001 │  11   │ 100% blue   │             14o = 001100b
  464.      °│ 010 010 │  22   │ 100% green  │             15o = 001101b
  465.      °│ 011 011 │  33   │ 100% cyan   │             16o = 001110b
  466.      °│ 100 100 │  44   │ 100% red    │             17o = 001111b
  467.      °│ 101 101 │  55   │ 100% magenta│             20o = 010000b
  468.      °│ 110 110 │  66   │ 100% yellow │                etc
  469.      °│ 111 111 │  77   │ 100% white  │
  470.       └─────────┴───────┴─────────────┘
  471.       (°) IBM-EGA default color palette
  472.  
  473.      Of course, other colors can also be generated when using a different RGB
  474.      mixture value.  For instance, a desaturated (i.e., whitish) RGB sequence
  475.      is obtained in the octal range 71o through 76o.  Those using the utility
  476.      SPECTRUM.COM (Copyright 1987 Ziff-Davis Publishing Corp.) will recognize
  477.      the <RGBrgb> octal format as the so-called "SPECTRUM code."
  478.  
  479.      This palette control is also enabled (VIz 2.42+) for the monochrome mode
  480.      of VGA and MCGA adapters to remap color codes into gray-scale values.
  481.  
  482.      The following services are available:
  483.  
  484.              * /Cn:n  To modify the EGA/VGA color palette from the DOS command
  485.                       line, type a 16-number sequence in which numbers must be
  486.                       separated by colons (:) as in the following example:
  487.  
  488.                          /C03:00:20:30:40:50:01:77:70:11:22:33:44:55:66:76
  489.  
  490.                       that represents the default palette colors loaded by VIz
  491.                       when switch /C? is used.  When an incomplete sequence is
  492.                       provided, the RGB values are written into the respective
  493.                       palette registers starting from register 0.  When a non-
  494.                       numeric value is provided, the palette is not changed.
  495.  
  496.  
  497.              * /Cm    Unlike the EGA, when the MCGA and VGA emulate a 16-color
  498.                       text mode for a monochrome display, the palette consists
  499.                       of four groups of four shades of gray.  Switch /Cm loads
  500.                       a palette where the gray-scale values increase uniformly
  501.                       with increasing attribute values. The monochrome palette
  502.                       corresponds to the command:
  503.  
  504.                          /C00:50:01:31:61:12:42:03:43:04:44:05:55:26:07:77
  505.  
  506.                       Switch /Cm can also be used with CGA monochrome displays
  507.                       (e.g., laptops) to translate color attributes into gray-
  508.                       scale values.
  509.  
  510.  
  511.                /C?    This service provides a display of the palette registers
  512.                       and the corresponding RGB mixture in octal format. It is
  513.                       possible to alter the RGB mixture of any register simply
  514.                       by pressing <R>, <G>, or <B> and then <> or <>.  These
  515.                       arrows cycle through 0%, 33%, 66%, and 100% intensity of
  516.                       the respective RGB component.  The actual RGB mixture of
  517.                       the selection is also shown on a graph.  Press the right
  518.                       or left arrow to cycle through the registers, and <HOME>
  519.                       to go to register 0 or <END> to go to register 15.
  520.  
  521.                       Press <ENTER> to save the current palette, <ESC> to quit
  522.                       the service without any palette changes, <DEL> to reject
  523.                       any change and to restart the service, and the indicated
  524.                       function keys to load several available palettes.
  525.  
  526.  
  527.              * /C-    Use to inactivate the implementation of EGA/VGA palette
  528.                       changes via VIz.  The video attributes remain unchanged
  529.                       until the a video operation reloads the palette, e.g. a
  530.                       video mode change.  Switch /A+ also turns off remapping
  531.                       of the palette.
  532.  
  533.  
  534.              * /C+    Use to reactivate the implementation of EGA/VGA palette
  535.                       changes via VIz; it reloads the last color palette that
  536.                       was selected via VIz.  Switch /A- reactivates remapping
  537.                       if remapping was in effect prior to an /A+ request.
  538.  
  539.      Defaults: /C = /C+.
  540.  
  541.      The selected EGA/VGA palette changes are asserted (i.e. the palette is re-
  542.      loaded with the selected RGB values) each time that a video mode change or
  543.      a video font change (int 10h functions 5h and 11h) is requested and VIz is
  544.      active (i.e., no /Q switch, graphics mode, or video page other than 0).
  545.  
  546.      To preserve the small size of Viz, there is no hotkey pop-up service. If a
  547.      program changes the palette when executed, the RGB mix values selected via
  548.      VIz cannot be asserted except by shelling to DOS and invoking VIz with the
  549.      switch /C+ to reload the palette or triggering a video mode/font change.
  550.  
  551.                                     --------
  552.  
  553.    * [/Dn]  Adjusts brightness of screen (VGA card only); the brightness change
  554.      step is specified by the sign and value of number <n> between -63 and +63.
  555.      Use of a high negative or positive number results in an unreadable screen.
  556.  
  557.      Requesting /D0 results in restoration of the screen to its default setting
  558.      (as dictated by the manual controls of the video monitor).  Defaults: /D =
  559.      = /D+1; /D1 = /D+1.
  560.  
  561.                                     --------
  562.  
  563.    * [/E]  Creates the DOS environment string VIZ=/SWITCH1.../SWITCHn, in which
  564.      SWITCH1...SWITCHn are the switches specified when VIz is executed from the
  565.      DOS command line.  When the string VIZ= already exists, the switch updates
  566.      the string contents.  (Although the switch is incorporated into the string
  567.      contents, its presence is ignored when VIz uses such string as input.)
  568.  
  569.      Switch /E modifes the global environment whether the resident shell is the
  570.      initial copy of COMMAND.COM (global environment) or a secondary one (local
  571.      environment).  See section 5.1 for more details.  No defaults.
  572.  
  573.                                     --------
  574.  
  575.    * [/F]   If VIz detects an EGA or VGA adapter, switch /F toggles between 25-
  576.      row (EGA/VGA) and 43-row (EGA) or 50-row (VGA) displays.  (When an EGA/VGA
  577.      adapter is found, VIz also selects the alternate BIOS print-screen service
  578.      to avoid the default ROM-BIOS print-screen routine that works with 25 rows
  579.      only.) In 25-row displays, VIz uses a 8x14 font for EGA or a 9x16 font for
  580.      VGA.  Fonts with more than 25 rows can be loaded only if the current video
  581.      page is between page 0 and 3 (see switch /S for printing screens with more
  582.      than 25 rows).  No defaults.
  583.  
  584.                                     --------
  585.  
  586.    * [/Gn]  Selects frequency in Hertz (cycles per second) of 55-ms bell tones.
  587.      Values between 25 Hz and 5,000 Hz are accepted.  Values below 25 become 25
  588.      Hz and above 5,000 become 5,000 Hz; use of more than 4 digits results in a
  589.      reading of the 4 least significant digits (i.e. 50,000 Hz is read as 0000,
  590.      triggering the use of 25 Hz).  Defaults: /G = /G440.
  591.  
  592.      (Most computer speakers work properly only in the range between 100 Hz and
  593.      3,000 Hz.  Frequencies for the octave starting at middle C are: C = 523.3,
  594.      D = 587.3, E = 659.3, F = 698.5, A = 880.0, and B = 987.7 Hz.  Frequencies
  595.      at higher [lower] octaves increase [decrease] approximately by a factor of
  596.      2 per octave change from the above values.)
  597.  
  598.      The tones always last 55 ms (one tick of the 8253/8254 timer chip).  Since
  599.      the tones are forced to begin at the start of a 55-ms tick period, stacked
  600.      calls to the bell (i.e. 'ECHO ^G^G^G^G^G^G') will result in a distinctive,
  601.      staccato burst due to intervening, silent 55-ms tick periods.
  602.  
  603.                                     --------
  604.  
  605.    * [/I±]  Toggles blinking (/I-) and intense (/I+) background colors whenever
  606.      the background attribute corresponds to a value between 8 and F (bit 7 on)
  607.      in the selection of screen foreground/background color.  No defaults.
  608.  
  609.                                     --------
  610.  
  611.    * [/L]   Instructs the program to load its resident module(s) in high memory
  612.      between 640 kb and 1,024 kb, i.e., below the 1 Mb boundary of conventional
  613.      RAM but above the RAM area normally controlled by DOS.  Switch /L requires
  614.      that an XMS manager (XMM) complying with the specifications of XMS 2.0 has
  615.      been previously installed and that a free upper memory block (UMB) of less
  616.      than 2 kb is available.  The XMM must support functions 10h (Allocate UMB)
  617.      and 11h (Free UMB).  Unlike the high-memory loading provided by 386 memory
  618.      managers, the required size of the free UMB is that of the resident(s) and
  619.      not that of the entire VIz program; an additional 64 bytes are used by XMS
  620.      for the UMB allocation.  (See High Memory Installation section.)
  621.  
  622.      Defaults: Low-memory installation if any error is found during high-memory
  623.      loading.
  624.  
  625.                                     --------
  626.  
  627.    * [/Mn]   Selects the video mode specified by a number <n> in the range of 0
  628.      through 99; note that there is no checking that the selected mode is valid
  629.      for the adapter.  No defaults.
  630.  
  631.                                     --------
  632.  
  633.    * [/N±]   Messages dealing with nonfatal operations are either not displayed
  634.      (/N+), as if they had been sent to the NUL device, or (normally) displayed
  635.      via the StdOut device (/N-), which can be redirected if switch /Z+ has not
  636.      been selected.
  637.  
  638.      Since VIz gives a beep when a command error is detected, switch /N- should
  639.      need to be used only after such a beep to display the error message again.
  640.      Note that the installing, uninstalling and fatal-operation messages of VIz
  641.      cannot be redirected and are always displayed. The status of operation can
  642.      be monitored in batch files with ERRORLEVEL commands.  Defaults: /N = /N+.
  643.  
  644.                                     --------
  645.  
  646.    * [/Pn]   Selects the video page specified by a number (n) in the range of 0
  647.      to 7 for EGA/VGA with 25-row font, or 0 to 3 for CGA and 43/50-row EGA/VGA
  648.      adapter.  No defaults.
  649.  
  650.                                     --------
  651.  
  652.    - [/Q]   Quiescent.  Switch /Q forces VIz to a 'quiet' mode; although still
  653.      resident, VIz will not provide video acceleration.  The overhead time for
  654.      having VIz in quiescent mode is 2% or less of that without VIz. Note that
  655.      even when quiescent or during graphics video mode, VIz still monitors the
  656.      BIOS video interrupt to check for page or mode change requests. Switch /Q
  657. |    disables video BIOS and StdOut (/Z+) acceleration, but does no affect the
  658. |    operation of the ANSI filter (/A+).
  659.  
  660.                                     --------
  661.  
  662.    * [/R±]   Forces the StdOut character device to normal text output mode [R-]
  663.      or 'raw' mode [R+].  In normal mode output, the DOS kernel builds a device
  664.      request header for a single character output, makes a Control-C check, and
  665.      passes the request to the device; if there is no error, the buffer pointer
  666.      and character count are updated, and this process is repeated until either
  667.      an end-of-file character (ASCII 26, Ctrl-Z) is found or all characters are
  668.      processed.  Tabs (ASCII 9) are expanded to 8 spaces.
  669.  
  670.      In raw or binary mode, however, DOS does not filter the stream for control
  671.      characters, but a single request header is passed to the device. Depending
  672.      on the DOS version, the DOS-mediated video output is faster in raw mode by
  673.      factor of about 1.40 (a much larger factor is provided by switch /Z+).  No
  674.      defaults.
  675.  
  676.      NOTE:   When using 'raw' DOS mode as the default condition, be sure to set
  677.              BREAK=ON in the CONFIG.SYS file to facilitate Ctrl-Break detection
  678.  
  679.      Some utilities set the DOS mode to 'raw' when executed and then change the
  680.      mode to normal when they finish, irrespective of the mode encountered when
  681.      they were executed.  Hence, repeated use of switch /R+ may be necessary to
  682.      maintain the raw character processing mode.
  683.  
  684.                                     --------
  685.  
  686.    * [/S±]  Inactivates [S-] or reactivates [S+] the BIOS Print Screen function
  687.      triggered by pressing the <PrtSc> key. This is useful when the keys of the
  688.      number pad are used often, and the chance of triggering an unwanted screen
  689.      print is commensurably high.
  690.  
  691.      If /S+ or /S-, or simply /S, is requested at the time of the installation,
  692.      VIz selects via a BIOS call the alternate print-screen service in the EGA/
  693.      VGA card BIOS extension that works properly if the screen length is not 25
  694.      lines (when the card is an EGA or VGA adapter).  This alternate service is
  695.      needed when 43/50 lines are to be used, since the ROM BIOS default service
  696.      only prints 25 lines.
  697.  
  698.      NOTE:  Some EGA cards do not work properly when the alternate print-screen
  699.      service is selected.  If selecting switch /S± at installation results in a
  700.      print-screen malfunction, first install VIz without selecting /S+, /S-, or
  701.      /S, and then select the switch in a subsequent execution.
  702.  
  703.      Defaults: /S = enable BIOS alternate print-screen service
  704.  
  705.                                     --------
  706.  
  707.    - [/U]   Uninstall.  Switch /U uninstalls the resident components of VIz if
  708.      the original interrupt vector 10h (and 29h, if the ANSI resident has also
  709.      been installed) has not been changed.  As with any other resident, do not
  710.      uninstall VIz after another resident has been installed since the machine
  711.      is likely to crash.
  712.  
  713.      Starting with version 2.20, VIz can be identified by name in low-memory-
  714.      usage maps. Although VIz removes its own copy of the DOS' environment at
  715.      at loading time (to minimize resident size), 'VIzxxx' will appear in the
  716.      in the listings of these maps irrespective of the actual contents of the
  717.      DOS command line at the time of VIz installation.  For instance, the 386
  718.      version of VIz (accelerator module only) will be listed by MAPMEM.COM of
  719.      Turbo Power Software as:
  720.  
  721.             PSP  blks bytes owner    command line        hooked vectors
  722.            ----- ---- ----- -------- ------------------- ---------------
  723.            xxxx   1     928 N/A      VIz412              10 21
  724.  
  725.      if VIz is installed in DOS memory.  However, if VIz is installed in high
  726.      conventional memory via switch /L, it will be listed only as:
  727.  
  728.             PSP  blks bytes owner    command line        hooked vectors
  729.            ----- ---- ----- -------- ------------------- ---------------
  730.            xxxx   1     928 N/A
  731.  
  732.      (Some other memory mapping utilities may fail to list this UMB separately
  733.      lumping it instead with other allocated blocks.)
  734.  
  735.                                     --------
  736.  
  737.    - [/V]   Forces a display of an alternating full-block-and-thin-line cursor
  738.      [Vn, n=1 to 99] or of a continuous full block [Vn, n=0], makes the cursor
  739.      invisible [V-], or allows display of the normal cursor [V+]. Switches /Vn
  740.      and /V- produce changes of cursor type that can be reversed with /V+. Due
  741.      to a potential BIOS conflict, switch /V- is ignored at installation time;
  742.      to make an invisible cursor, first use /V+ or /Vn and then /V-. Defaults:
  743.      /V = /V+.
  744.  
  745.      NOTE: The cursor resident component is not loaded unless VIz is installed
  746.            with the switch /V+ or /Vn, and cannot be loaded after installation
  747.            of the resident.
  748.  
  749.                                     --------
  750.  
  751.    - [/Z±]  Directs video output mediated via interrupt 21h, fn. 40h (write to
  752.      device [StdOut]) to the console driver [Z-], or to the accelerator module
  753.      of VIz [Z+].  Defaults: Null or /Z = /Z-.
  754.  
  755.      Switch /Z+ provides a significant acceleration of video output for DOS-2+
  756.      services and many other utilities using the write-to-StdOut function.
  757.  
  758.      See above for conflicts with StdOut redirection. Z+ processing uses an 8-
  759.      space tab expansion (which is the standard expansion used by DOS).  This,
  760.      however, conflicts with the 4-space tab expansion used by the DOS command
  761.      'DIR' for its switch /W.
  762.  
  763.                                     --------
  764.  
  765.    Comments may be added in the DOS command line invoking VIz after the desired
  766.    switches.  The comments, which may be useful in clarifying batch files, must
  767.    be preceded by a semicolon (;), and are ignored by VIz.
  768.  
  769.    NOTE:   Do not use the DOS redirection (<>) and pipe (|) characters in these
  770.            comments as DOS will attempt to implement the implied redirection or
  771.            pipe request.
  772.  
  773.  ------------------------------------------------------------------------------
  774.  
  775.    5.1  ENVIRONMENT VARIABLE 'VIZ'
  776.  
  777.    Starting with VIz version 3.63, when VIz is executed without any arguments
  778.    from either the DOS command line or a batch file, the program switches can
  779.    be specified via a DOS environment variable 'VIZ' having the format:
  780.  
  781.                         VIZ=/SWITCH1/SWITCH2..../SWITCHn
  782.  
  783.    Up to 128 characters are allowed after the equal sign.  There cannot be any
  784.    spaces between switches; use slash as a separator. The string can be placed
  785.    in the DOS environment block via the SET command or via switch /E.
  786.  
  787.    While the SET command modifies the default environment block, whether it is
  788.    the global or a local one, switch /E always modifies the global environment
  789.    block (even when VIz is executed via a secondary copy of COMMAND.COM, as in
  790.    the case of 'shelling to DOS' from inside an application).  Note that local
  791.    environment blocks (i.e. a secondary COMMAND) are only a copy of the master
  792.    global block and lack sufficient room to increase the length of a variable;
  793.    hence, when the default block is a local one, switch /E does not modify it.
  794.    In contrast, when reading the environment variable, the program always uses
  795.    the default environment block.
  796.  
  797.     NOTE:  See the file DOS_ENV.TXT, distributed in this release, for a more
  798.             detailed description of the DOS environment block.
  799.  
  800.  
  801.    A recommended use of the environment string is to specify the default /Cn:n
  802.    configuration (e.g. /C03:00:20:30:40:50:01:77:70:11:22:33:44:55:66:76) that
  803.    can be restored simply by executing VIz without any arguments after the RBG
  804.    EGA/VGA palette has been changed.
  805.  
  806.                                 ----------------
  807.  
  808.    5.2  DOS ERRORLEVEL
  809.  
  810.    Starting with version 3.10, VIz passes to DOS execution status values that
  811.    can be tested in batch files via the ERRORLEVEL command; the following are
  812.    values for version 4.02 or higher:
  813.  
  814.                 Value   Condition
  815.                 -----   --------------------------------------
  816.                   255   Cyclical Redundancy Check failure
  817.                   254   CPU type does not support the 386 or 286 version
  818.                   253   Not enough memory to execute /C? or /?
  819.                   252   Unable to remove resident from memory
  820.                   251   Invalid cursor (switch /Vn) request
  821.                   250   Invalid ANSI (switch /A) request
  822.  
  823.                   128   XMM not installed or XMS error in UMB load
  824.                    64   Incomplete color palette data list
  825.                    32   Invalid color palette datum
  826.                    16   Invalid video font for adapter and/or page
  827.                     8   Invalid video mode request
  828.                     4   Invalid video page for adapter and/or font
  829.                     2   Invalid video adapter for the request
  830.                     1   Unknown or invalid switch request
  831.                     0   Succesful execution
  832.  
  833.    Note that some errorlevel conditions in the range between 1 and 128 may be
  834.    additive, and the errorlevel output may represent the sum of their values.
  835.  
  836.                                 ----------------
  837.  
  838.    6.0  INSTALLATION
  839.  
  840.    It is recommended that VIz be installed before other resident programs also
  841.    using the BIOS video interrupt 10h.  Due to the nature of some of the video
  842.    functions served, VIz often will not daisy chain the interrupt-10h requests
  843.    to residents located down the intercepted interrupt-10h chain. In order for
  844.    these residents to receive interrupt-10h data, they must be installed after
  845.    VIz has been installed; thus, it is convenient to install VIz early in your
  846.    AUTOEXEC.BAT file.
  847.  
  848.    Keep in mind that the larger the number of additional residents, the slower
  849.    the absolute video acceleration times provided by VIz.  This is because the
  850.    int-10h request has to be processed by each element in the interrupt chain.
  851.    One way to minimize the problem is to install a minimum number of residents
  852.    via the AUTOEXEC.BAT and, before executing a given application, install any
  853.    additional resident via a batch file that also executes the application and
  854.    removes the residents upon the completion of the task. (VIz itself may fall
  855.    in this transient category.)
  856.  
  857.    If you intend to make occasional use of the ANSI-compatible filter, without
  858.    removing the resident ANSI component from memory, VIz may be installed just
  859.    as decribed above.  However, if you want to remove the ANSI component after
  860.    a given ANSI-oriented task, then VIz must be the last resident to have been
  861.    installed prior to such a removal.
  862.  
  863.    ANSI.SYS or ANSI.COM should not be loaded in order to use the ANSI resident
  864.    of VIz.  Notice that if an ANSI filter is active and VIz is switched to its
  865.    'fast DOS' mode (/Z+), this filter is likely to be unable to process escape
  866.    sequences, unless the sequences are sent directly to the CONsole device via
  867.    interrupt 29h instead of via DOS interrupt 21h.
  868.  
  869.  
  870.  
  871.    6.1  RESIDENT SIZE
  872.  
  873.    Resident sizes obtained for various installation switches are listed below.
  874.    The values are in bytes to the nearest 16-byte ('paragraph') multiple:
  875.  
  876.  
  877.                     VIz 4.12    /Z+       /V+       /A+
  878.                     -----------------------------------
  879.                       386+      928      1008      1696
  880.                       286+      896       976      1680
  881.                       086+      912       992      1696
  882.  
  883.  
  884.  
  885.    6.2  HIGH-MEMORY RESIDENT INSTALLATION
  886.  
  887.    DIRECT UMB LOADING
  888.  
  889.    Starting with version 4.02, VIz can load itself directly into high memory
  890.    (RAM addresses between 640 kb and 1,024 kb) via switch /L. Such a loading
  891.    is mediated by an XMS manager (XMM) version 2.0, such as the driver HIMEM
  892.    .SYS (Microsoft), which must be installed prior to VIz loading. Some 386-
  893.    memory managers (386^MAX version 4.09 and QEMM version 5.11, for example)
  894.    provide XMS support as well.  All XMMs require DOS version 3.0 or later.
  895.  
  896.    For the loading to be successful, an upper memory block (UMB) of the size
  897.    of the VIz resident(s), plus an additional 48-byte block used by the XMM,
  898.    must be available.
  899.  
  900.  
  901.    LOADING VIA 386-MEMORY MANAGERS
  902.  
  903.    VIz can also be loaded into high memory via 386-specific memory managers,
  904.    provided that there is enough high-memory for the actual size of VIz plus
  905.    the additional memory that is required by the loading utility.
  906.  
  907.    VIz is a compressed file that expands when loaded. The difference between
  908.    the loaded and the directory size of VIz may produce conflicts with high-
  909.    memory loading utilities that fail to measure the actual size of the file
  910.    being loaded. If there is not enough high-DOS memory to permit expansion,
  911.    but there is enough memory for the nominal directory size, such utilities
  912.    will load the compressed program, whose subsequent expansion is likely to
  913.    overwrite adjacent code and crash the computer.  Note that when switch /?
  914.    or /C? has been selected, an additional 4,300 bytes of RAM are needed.
  915.  
  916.    Further, even when the proper size is specified and available, some high-
  917.    memory loading programs for 386 systems may become corrupted when loading
  918.    into high memory compressed files of the type of VIz.
  919.  
  920.  
  921.  
  922.    6.3  HIGH-MEMORY RESIDENT UPDATING
  923.  
  924.    Starting with version 3.40, a high-memory loading utility is not required
  925.    to update the resident component of VIz, when this resident was installed
  926.    in the first megabyte of memory (286+ CPU).  Such updates can be made via
  927.    normal calls from the DOS command line or batch-file calls. This obviates
  928.    a major restriction in using high memory installation, namely the need to
  929.    keep enough free high memory to load an entire program only to update its
  930.    small resident component.
  931.  
  932.  
  933.    6.4  HIGH-MEMORY RESIDENT REMOVAL
  934.  
  935.    When VIz has been installed in high memory directly via switch /L, it can
  936.    be removed directly from memory via switch /U from the DOS command line.
  937.  
  938.    When a high-memory installation was mediated by a memory manager, Viz can
  939.    be removed with switch /U directly from the command line or after opening
  940.    the high memory with the memory manager. When the resident is removed via
  941.    such a manager, notice that some of these utilities warn that a "resident
  942.    installation has failed."  Such warnings are harmless and may be ignored.
  943.  
  944.  ------------------------------------------------------------------------------
  945.  
  946.    7.  ERROR MESSAGES
  947.  
  948.  
  949.    7.1   "CRC error ─ Execution aborted"
  950.    A failure of 32-bit cyclical redundancy check was encountered when VIz was
  951.    executed.
  952.  
  953.                                     --------
  954.  
  955.    7.2a  "This CPU cannot execute 286+ code ─ VIz aborted"
  956.    286+ versions of VIz cannot be executed in 8088, 8086, or (most) 80186 CPU
  957.    machines.
  958.  
  959.                                     --------
  960.  
  961.    7.2b  "This CPU cannot execute 386+ code ─ VIz aborted"
  962.    386+ versions of VIz cannot be executed in 8088, 8086, 80186, or 80286 CPU
  963.    machines.
  964.  
  965.                                     --------
  966.  
  967.    7.3   "Needs DOS 2.10 or higher ─ Execution aborted"
  968.    The program requires an MS-DOS/IBM-PC DOS version equal to or greater than
  969.    2.10 for proper execution.
  970.                                     --------
  971.  
  972.    7.4   "Installed - Enter 'VIz /?' for Status/Help panel"
  973.    VIz was successfully executed and the resident(s) installed.
  974.  
  975.                                     --------
  976.  
  977.    7.5   "A logical device named 'CON' is already installed"
  978.          "Loading of the resident ANSI filter is cancelled."
  979.    A logical driver with the device name CON was detected during installation
  980.    with switch /A+ selected; in most cases this character device is ANSI.SYS.
  981.    The resident ANSI filter of VIz is not installed.
  982.  
  983.                                     --------
  984.  
  985.    7.6   "Updated"
  986.    The relevant resident parameters of VIz were successfuly updated.
  987.  
  988.                                     --------
  989.  
  990.    7.7   "Interrupt XXh has been revectored ─ Cannot uninstall"
  991.          "Remove revectoring or inactivate with switches /Q/A-"
  992.    The indicated interrupt vector (segment:offset) has been changed since its
  993.    interception during the installation.  VIz hooks interrupts 08h, 10h, 21h,
  994.    and 29h (hexadecimal); if more than one interrupt vector has changed, only
  995.    the first one is shown.
  996.  
  997.                                     --------
  998.  
  999.    7.8   "Not enough memory for display processing"
  1000.    When switch /C? or /? is selected, VIz first releases any additional memory
  1001.    and then requests to DOS the allocation of 4300 bytes for video processing.
  1002.    The message is displayed if this memory is not available (other services or
  1003.    functions can still be executed).
  1004.  
  1005.                                     --------
  1006.  
  1007.    7.9   "Invalid switch /Xx ─ Request disregarded"
  1008.    An invalid switch designator (X) or switch parameter (x) was passed to VIz.
  1009.  
  1010.                                     --------
  1011.  
  1012.    7.10  "Cannot add resident modules after VIz installation:"
  1013.          "Uninstall residents and reinstall with switch '/A+'"
  1014.    Switch /A+ was requested after VIz was installed without the resident ANSI
  1015.    filter. Viz needs to be uninstalled and then reinstalled with the switch.
  1016.  
  1017.                                     --------
  1018.  
  1019.    7.11  "Cannot add resident modules after VIz installation:"
  1020.          "Uninstall residents and reinstall with switch '/Vn'"
  1021.    Switch /Vn was requested after VIz was installed without the laptop cursor
  1022.    resident. Viz needs to be uninstalled and then reinstalled with the switch.
  1023.  
  1024.                                     --------
  1025.  
  1026.    7.12  "Invalid page request"
  1027.    A page greater than the maximum page allowed by the video adapter and the
  1028.    current video font was requested.  The CGA supports four 80x25 text pages
  1029.    (0-3). The EGA, MCGA, and VGA support eight 80x25 pages (0-7), or 4 pages
  1030.    when 80x43 (EGA), 80x40 (MCGA), or 80x50 (VGA) font displays are used.
  1031.  
  1032.                                     --------
  1033.  
  1034.    7.13  "Only pages 0-3 can be used with 43/50-row fonts"
  1035.    A video page (4 through 7) incompatible with the video font was requested
  1036.    (see 7.11).
  1037.  
  1038.                                     --------
  1039.  
  1040.    7.14  "Invalid mode request"
  1041.    A video mode incompatible with the (active) video adapter was requested.
  1042.  
  1043.                                     --------
  1044.  
  1045.    7.15  "Invalid adapter request"
  1046.    An operation or service incompatible with the (active) video adapter was
  1047.    requested.
  1048.  
  1049.                                     --------
  1050.  
  1051.    7.16  "Incomplete RGB data ─ Partial palette update"
  1052.    An incomplete list of EGA/VGA palette RGB mixtures was provided. Only the
  1053.    data provided were updated.
  1054.  
  1055.                                     --------
  1056.  
  1057.    7.17  "Invalid RGB datum ─ Palette unchanged"
  1058.    An invalid RGB mixture datum was provided in an EGA/VGA palette list. The
  1059.    data of the palette were not changed.
  1060.  
  1061.                                     --------
  1062.  
  1063.    7.18  "Invalid bell frequency"
  1064.    A bell tone frequency less than 25 Hz or more than 5000 Hz was requested.
  1065.  
  1066.                                     --------
  1067.  
  1068.    7.19  "ANSI filter not yet installed"
  1069.    Switch /A- was requested when the ANSI filter had not been installed.
  1070.  
  1071.                                     --------
  1072.  
  1073.    7.20  "Uninstalled"
  1074.    VIz resident modules were successfuly deallocated from memory.
  1075.  
  1076.                                     --------
  1077.  
  1078.    7.21  "Failed to detect presence of an XMS manager (XMM)"
  1079.    VIz failed to determine presence of a driver compatible with the Extended
  1080.    Memory Specification (XMS) version 2.0 and the requested high-memory load
  1081.    (/L) defaulted to a normal low-memory installation.
  1082.  
  1083.                                     --------
  1084.  
  1085.    7.22  "XMM failed to allocate upper memory block [XMS error: XXh]"
  1086.    The XMS manager did not allocate the requested UMB.  One of the following
  1087.    XMS error codes would be expected:
  1088.  
  1089.               00h - Allocated UMB smaller than requested size.
  1090.  
  1091.               80h - Function is not implemented.
  1092.               8Eh - General driver error occurred.
  1093.               8Fh - Unrecoverable driver error occurred.
  1094.               B0h - Smaller UMB is available.
  1095.               B1h - No UMBs are available.
  1096.               B2h - UMB segment number is invalid.
  1097.  
  1098.                                     --------
  1099.  
  1100.    7.23  "XMM failed to free upper memory block [XMS error: XXh]"
  1101.    The XMS manager did not free the allocated UMB. (See above for XMS error
  1102.    codes.)
  1103.  
  1104.                                     --------
  1105.  
  1106.    7.24  "Not enough room in DOS environment block"
  1107.    There is insufficient room in the DOS environment block for the requested
  1108.    VIZ= environmental variable; this may be due to the use of a small block,
  1109.    which can be expanded as described in the file DOS_ENV.TXT.
  1110.  
  1111.  
  1112.  ------------------------------------------------------------------------------
  1113.  
  1114.                   SINGLE USER (BBS-DISTRIBUTED) LICENSE AGREEMENT
  1115.  
  1116.    REGISTRATION
  1117.  
  1118.    These programs and the documentations (the "software") are the copyrighted
  1119.    property of FM de Monasterio (the "author"), who provides the software and
  1120.    licenses its use.  Neither the title to nor ownership of this software are
  1121.    transferred to you by such a license, and both are retained by the author.
  1122.    All rights are reserved.
  1123.  
  1124.    The software is user-supported; the enclosed release, although lacking the
  1125.    options marked by asterisks, is a fully usable program.  You may test this
  1126.    release for (in)compatibilities with your system, but after the testing is
  1127.    completed you are requested to order a registered release of this software
  1128.    from the address below.
  1129.  
  1130.    Alternatively, to continue use of this unregistered copy, send to the same
  1131.    address a US$5.00 check marked "For Deposit Only," and payable to "PATIENT
  1132.    CARE FUND, CHILDREN'S HOSPITAL" of Washington, DC.  Unregistered users who
  1133.    donate to this fund may legally keep such a copy under the injunctions and
  1134.    limitations described below.
  1135.  
  1136.    A form needed for the registration or upgrade of this software is provided
  1137.    in the file VIZ.REG.  Refer all inquiries about the software to:
  1138.  
  1139.                                                    FM de Monasterio
  1140.                                                    P.O. Box 219
  1141.                                                    Cabin John, MD 20818-0219
  1142.    LICENSE
  1143.  
  1144.    Upon registration you receive a non-exclusive, non-transferable license to
  1145.    use the software. Two types of license are available:
  1146.  
  1147.    Single User License:
  1148.    Upon registration/upgrade you are granted a nontransferable license to use
  1149.    the software in a single computer at a time. You may transfer the software
  1150.    physically to another computer provided that the software is then not used
  1151.    on more than one computer at any time.
  1152.  
  1153.    Site/10-Computer License:
  1154.    Upon registration/upgrade you are granted a nontransferable license to use
  1155.    the software in a single site or a set of sites provided that the software
  1156.    is not used in more than ten computers at any time and that such computers
  1157.    are located exclusively within the registered site(s).
  1158.  
  1159.  
  1160.    UPGRADES
  1161.  
  1162.    Within the same major version:  Registered software users can upgrade free
  1163.    of charge within the same major version (e.g., 2.00 through 2.99).
  1164.  
  1165.    Outside the same major version:  Registered users can upgrade for half the
  1166.    the license fee for a different version of the software.
  1167.  
  1168.    To upgrade send a self-addressed stamped diskette mailer with the original
  1169.    360 kb diskette to the address above, along with the upgrade form.
  1170.  
  1171.  
  1172.    SUPPORT
  1173.  
  1174.    Limited technical support is provided to registered users. If you discover
  1175.    a problem, please try to replicate it under the same conditions and, then,
  1176.    in the absence of other resident programs. (Changes in the order residents
  1177.    are installed sometimes solve conflicts.) If the problem can be replicated
  1178.    please write at the address above providing:
  1179.  
  1180.                 - Your name and address.
  1181.                 - Program version number (see the Syntax/Help panel).
  1182.                 - Computer model and configuration, and hardware used.
  1183.                 - A sufficiently detailed description of the problem.
  1184.                 - A list of resident and nonresident programs in use,
  1185.                   and their sequence of loading into memory.
  1186.  
  1187.  
  1188.    Messages may be left c/o Sysop at:    The DC Information Exchange BBS
  1189.                         ~~~              202-433-6639, Sysop: Bill Walsh
  1190.                                          (2400+ baud).
  1191.  
  1192.  
  1193.    INJUNCTIONS
  1194.  
  1195.    You may distribute this software via magnetic and/or electronic means, but
  1196.    you are specifically prohibited from:
  1197.  
  1198.                 - Charging fees or asking donations in exchange of or payment
  1199.                   for copies of the software.
  1200.                 - Distributing this software with commercial products without
  1201.                   the written permission from the author.
  1202.                 - Distributing this software via a for-profit organization or
  1203.                   group, either alone or with other software.
  1204.  
  1205.    The unauthorized copying, decompiling or disassembling of this software is
  1206.    prohibited; any other use of this software is prohibited without a written
  1207.    permission in advance from the author.
  1208.  
  1209.  
  1210.    LIMITED WARRANTY
  1211.  
  1212.    The author-copyright owner warrants for a period of thirty (30) days from
  1213.    the date of delivery that, under normal use and without any modification,
  1214.    the programs substantially conform to the accompanying specifications and
  1215.    that the documentation is substantially complete and contains information
  1216.    the author deems necessary to use the programs. If, during the thirty-day
  1217.    period, a demonstrable defect in the programs, magnetic medium upon which
  1218.    they are distributed, or documentation should appear, you may return this
  1219.    software for repair or replacement, at the author's option. If the defect
  1220.    cannot be repaired, or the software replaced with functionally equivalent
  1221.    software, within sixty (60) days of the author's receipt of the defective
  1222.    software, then you shall be entitled to a full refund of the license fee,
  1223.    but not of the mailing/handling costs described in the registration form.
  1224.  
  1225.    All other warranties of any kind, either express or implied,including but
  1226.    not limited to the implied warranties of  merchantability and fitness for
  1227.    for as a particular purpose, are expressly excluded.
  1228.  
  1229.    The author cannot and does not warrant that any function contained in the
  1230.    programs will meet your requirements, or that the operation will be error
  1231.    free. The entire risk as to the software performance or quality, or both,
  1232.    is solely with the user, and not with the author.
  1233.  
  1234.  
  1235.    LIMITATION OF REMEDIES
  1236.  
  1237.    You assume responsibility for the selection of the program to achieve your
  1238.    intended results, and for the installation, use, and results obtained from
  1239.    the software.
  1240.  
  1241.    The author makes no warranty, either implied or expressed, including with-
  1242.    out limitation any warranty with respect to this software documented here,
  1243.    its quality, performance, or fitness for a particular purpose. In no event
  1244.    shall the author be liable to you for damages, whether direct or indirect,
  1245.    incidental, special, or consequential arising out the use of or any defect
  1246.    in the software, even if the author has been advised of the possibility of
  1247.    such damages, or for any claim by any other party.
  1248.  
  1249.    The author's entire liability, and your exclusive remedy shall be: (1) the
  1250.    replacement of an original software diskette not meeting the above Limited
  1251.    Warranty and which is returned to the author along with proof of purchase,
  1252.    or (2), if the author is unable to deliver a replacement diskette which is
  1253.    free of defects, you may terminate the License Agreement by returning this
  1254.    software and the corresponding license fee will be returned.
  1255.  
  1256.  
  1257.    GENERAL
  1258.  
  1259.    By using the software, you acknowledge (1) to have read and understood all
  1260.    parts of this document and (2) to have agreed with and accepted all of its
  1261.    provisions without any reservation.
  1262.  
  1263.  ------------------------------------------------------------------------------
  1264.    [END]
  1265.